package com.webserver.core;

import java.net.ServerSocket;
import java.net.Socket;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

/**
 * 
 * WebServer是一个网络容器，模拟Tomcat的基础功能。
 * 网络容器的主要工作:
 * 1:维护若干的webapp(网络应用，每个网络应用相当于是一个"网站"，包含网页，资源，
 *   java代码)
 * 2:维持与浏览器的连接(TCP),并基于HTTP协议与浏览器完成交互工作，使得浏览器可以
 *        连接到服务端并请求某个webapp下的网页或业务(注册，登录等操作)  
 * @author 范传奇
 *
 */
public class WebServer {
	private ServerSocket server;
	private ExecutorService threadPool;
	
	public WebServer() {
		try {
			System.out.println("正在启动服务端...");
			server = new ServerSocket(8088);
			threadPool = Executors.newFixedThreadPool(50);
			System.out.println("服务端启动完毕!");
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	public void start() {
		try {
			
			while(true) {
				System.out.println("等待客户端连接...");
				Socket socket = server.accept();
				System.out.println("一个客户端连接了!");
				
				//启动一个线程来处理客户端的交互
				ClientHandler handler = new ClientHandler(socket);
				
				threadPool.execute(handler);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	public static void main(String[] args) {
		WebServer server = new WebServer();
		server.start();
	}
}










